package view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import model.Advertentie;
import model.CiiBay;

/**
 * View dat alle artikelen de ingelogde gebruiker.
 * @author Dennis
 * @author Yasper
 */
@SuppressWarnings("serial")
public class MijnArtikelenView extends JPanel implements Observer {
	private CiiBay ciiBay;
	private JPanel resultaten;
	private JScrollPane scroll;
	private JLabel leeg;

	/**
	 * Constructor.
	 * @author Nick
	 * @author Yasper
	 * @param ciiBay
	 */
	public MijnArtikelenView(CiiBay ciiBay) {
		setBackground(Color.ORANGE);
		this.ciiBay = ciiBay;
		ciiBay.addObserver(this);
		setLayout(new BorderLayout());
		resultaten = new ResultaatPaneel();
		leeg = new JLabel("Je hebt nog geen artikelen!");
		scroll = new JScrollPane(resultaten,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		add(scroll, BorderLayout.CENTER);
		scroll.getVerticalScrollBar().setUnitIncrement(12);
		scroll.setBorder(null);
	}

	/**
	 * Update het paneel met de juiste zoekresultaten.
	 * Zorgt ervoor dat elk resultaat onder de vorige wordt gezet.
	 * @author Jaap, Yasper
	 */
	@Override
	public void update(Observable arg0, Object arg1) {
		scroll.remove(resultaten);
		scroll.setViewportView(resultaten);
		revalidate();
	}

	class ResultaatPaneel extends JPanel implements Observer{
		/**
		 * Het paneel dat alle zoekresultaten bevat
		 * @author Jaap, Yasper
		 */
		public ResultaatPaneel(){
			this.setBackground(Color.ORANGE);
			this.setLayout(new GridBagLayout());
			ciiBay.addObserver(this);
		}
		/**
		 * Update het paneel met de nieuwe zoekresultaten
		 * @author Jaap, Yasper
		 */
		@Override
		public void update(Observable arg0, Object arg1) {
			String message = (String) arg1;
			if(message.equals("mijnArtikelen")){
				removeAll();
				ArrayList<Advertentie> resultaten = ciiBay.getZoekResultaten();
				GridBagConstraints c = new GridBagConstraints();
				int y = 0;
				c.gridx = 0;
				c.anchor = GridBagConstraints.NORTHWEST;
				c.fill = GridBagConstraints.BOTH;
				c.insets = new Insets(0,0,5,0);
				if(resultaten.size() == 0) {
					this.add(leeg);
				} else {
					for(Advertentie a : resultaten){
						c.gridy = y;
						this.add(new EnkelZoekResultaat(a, ciiBay),c);
						y++;
					}
				}
			}
		}
	}
}
